<link rel="import" href="../../bower_components/polymer/polymer.html">

<!-- tf-url-generator is a plumbing component that provides two upward bindable properties:
 outRunsUrl and outValuesUrlGenerator. These may be used by the rest of the application to communicate
 with the backend, and by overriding the TF.Urls code that backs it, can be modified to load data from
 a demo data source instead.
 -->
<dom-module id="tf-url-generator">
  <script src="urlGenerator.js"></script>
  <script>
    var polymerObject = {
      is: "tf-url-generator",
      properties: {
        outRunsUrl: {
          type: String,
          value: function() {
            return TF.Urls.runsUrl();
          },
          readOnly: true,
          notify: true,
        },
      },
    };
    TF.Urls.routes.forEach(function(route) {
      /* for each route (other than runs, handled seperately):
       * out`RouteName`: {
       *  type: Function,
       *  readOnly: true,
       *  notify: true,
       *  value: function() {
       *    return TF.Urls.`routeName`Url;
       *  }
       */
      if (route === "runs") {
        return;
      }
      var urlName = route + "Url";
      var propertyName = Polymer.CaseMap.dashToCamelCase("out-" + urlName + "Generator");
      polymerObject.properties[propertyName] = {
        type: Function,
        value: function() {
          return TF.Urls[urlName];
        },
        notify: true,
        readOnly: true,
      }
    });
    Polymer(polymerObject);
  </script>
</dom-module>
